Enterprise Pricing Events Lifecycle Guide

TEP supports both events and API communication. This brief guide describes a representative, sample lifecycle for Temenos Enterprise Pricing (TEP) events. While not all the events are explored in this guide, the guide is intended to provide you with information on both outgoing events, and some of the incoming events to TEP.

Note: Design time APIs, such as the creation of features and so on, for example, are not covered by this guide.

TEP Workflow

Temenos Enterprise Pricing

Any core banking system can communicate with TEP using events, through an adapter that converts the underlying core system data into a format that's consumable by TEP. The same event can be consumed by multiple systems that have subscribed to the event.

The adapter converts the core system data into a format that's supported by TEP, and emits the business events (for example, transaction, account opening, and so on) to the event store. The listener receives the events and sends them to TEP, which then evaluates the events and calculates pricing, when required.

After the evaluation, TEP emits the calculated pricing and all the related information through an outgoing event to the event store. The adapter then converts the outgoing event from TEP to a supported format and pushes the data to the core system for processing, raising accounting entries or other book-keeping activities.

Outgoing Events

The outgoing events are TEP response events. TEP performs the pricing evaluation, either automatically (for example, package pricing) or based on the incoming events and pass a detailed outward response. The following event types are supported by TEP.

Event Type

Description

Activity Pricing

Communicates all transaction-based pricing.

Periodic Pricing

Responds to all scheduled charge requests.

Rate

Responds to rate requests.

Lifecycle Diagram

Legend

TEP API example

The API URL that's used to carry out this business process.

API action

API request (typically, a command to perform an operation).

TEP Event Example The event type that's emanated. 
Event Business event emanating after the process is completed by the system. 
Business process Business process in the system.
End of business process Completion of the business process in the system. 

Tip: Click diagram to expand.

TEP Lifecycle Guide

Activity Pricing

An activity pricing event is an outgoing event from TEP that communicates the details of an activity charges evaluation. The user can define the event name in an activity and charges based on the activity. This indicates that a fee could be charged for any event name. The outgoing event contains information on the original and final charge, after application of pricing benefits.

API
The API that is used to evaluate activity charges.

POST /enterprise/pricing/arrangements/{basereference}/activityCharges

 

Event
The event that's emanated at activity charges evaluation.

enterprise.calculateActivityPricing.activityPricingCalculated

 

Event Payload

contractReference

Indicates the account Id in which the event is raised.

eventName

Indicates the name of the event that was used for processing by the TEP system.

baseEventIdentifier Indicates the name of the event happening in the core system. TEP uses this detail for information purpose and returns the same in the outbox events for adapters to match up.
effectiveDate Indicates the event date. 
bookingDate Indicates the date on which this business activity is performed in the underlying system.  
channel Indicates the channel in which the activity was performed.  
branch Indicates the branch name or code in which the business activity was performed.  
lineOfBusiness Indicates the line of business in which the activity was performed.  
systemReference Identifies the system to which the event is outgoing.  
companyReference Identifies the underlying entity, company, or branch.  
transactionReference Indicates the identifier of the original transaction reference. This is the transaction reference provided by the core banking system, through the incoming message, which is also included in the outgoing (from the TEP) response, so that the core can reconcile. 
chargeCurrency Indicates the identifier for the currency in which charge is calculated. 
processingReference Indicates the TEP reference used to process this pricing calculation. This detail is for information purpose to relate back to the computation or query from core systems or front office.  
feeName Name of the fee that's applied to the transaction reference.  
feeDescription Describes the fee that's applied to the transaction reference.  
originalFee Indicates the standard fee amount applied before pricing evaluation.  
feeAdjusted Total signed adjustment amount.  
finalFee Final fee after pricing evaluation.  
feeType Indicates if the fee is a debit or credit type of charge. A debit charge indicates the fee that is due from the customer. A credit indicates the fee is to be given to the customer, that is cash back.  
feeApplicationType Indicates whether the fee is to be made due, paid, or capitalised.  
benefitType Indicates the identifier for the name of the benefit(s) passed on to the customer or party.  
benefitProgram Indicates the pricing program under which benefit is offered.  
benefitAmount Indicates the quantum of benefit for a given benefit type.  
activityName Indicates the activity which was used by TEP to arrive at the fee calculation.  
Sample Code: Activity Pricing Event

{
  "specversion": "BBBBBBB",
  "type": "AAAAAAAAA",
  "subject": "DDDDDDDD",
  "source": "eeeee",
  "id": "bbbbbbb",
  "time": "BBBBB",
  "correlationid": "cccccc",
  "serviceid": "ee",
  "channelid": "cc",
  "organizationid": "bbbbbbbb",
  "tenantid": "cccccc",
  "businesskey": "DDDDDDDDD",
  "sequenceno": 1,
  "authorization": "ccccccccc",
  "customfilterid": "eee",
  "operationinstanceid": "ccc",
  "sequenceinstanceid": "e",
  "priority": 1,
  "data": {
		"chargeCurrency": "DDDDDD",
	    "processingReference": "CCCC",
		"activityName": "ee",
    
    "baseContractDetails": [
      {
        "contractReference": "DDDDDD",
        "systemReference": "CCCC",
        "companyReference": "BBBBB",
        "eventName": "",
        "baseEventIdentifier": "b",
        "effectiveDate": "ddddddddd",
        "bookingDate": "EEEE",
        "contractCurrency": "AAAAAA",
        "channel": "BBBBBBBB",
        "branch": "eeeeee",
        "lineOfBusiness": "CCCCCCCC",
        "transactionReference": "ddddd",
        "reversalIndicator": false,
        "variation": "",
              "party": [
          {
            "party": "DDDDDDD",
            "partyRole": "",
           
          }
        ],
        "eligibility": [
          {
            "variation": "cccccccc",
            "actionContext": "A",
            "failureType": "A",
                     }
        ],
		 "eligibilityRule": [
          {
            "ruleName": "cccccccc",
            "customerRole": "AAAA",
			 "roleRuleName": "BBBBB",
			  "failureAction": "CCCCC",
            
                     }
        ]
      }    ,
   
    "feeProcessDetails": {[
      {
        "feeName": "eeeeeeeee",
        "feeDescription": "CCCCC",
		"originalFee": "cccccccc",
            "feeAdjusted": "AAAA",
			 "finalFee": "BBBBB",
			  "feeType": "CCCCC",
			  "feeApplicationType": "CCCCC",
			  "benefitDetails": [
          {
            "benefitProgram": "cccccccc",
            "benefitType": "AAAA",
			 "benefitAmount": "BBBBB",
			 
            
                     }
        ],
		  "individualFeeDetails": [
          {
            "baseFeeName": "cccccccc",
            "baseFeeDescription": "AAAA",
			 "baseFeeAmount": "BBBBB",
			  "baseFeeAdjustment": "cccccccc",
            "baseFeeNetAmount": "AAAA",
			
			 
            
                     }
        ]
      }
    ],
  
  }
}
}
  



Periodic Pricing

API
The API that's used to evaluate periodic charges.

POST/ enterprise/pricing/arrangements/{basereference}/periodicCharges

 

Event
The event that's emanated at periodic charges evaluation.

enterprise.calculatePeriodicPricing.periodicPricingCalculated

 

Event Payload

contractReference Unique identifier for the contract or account in which the event is raised.
eventName Name of the event that was used for processing by the TEP system.
baseEventIdentifier Name of the event happening in the core system. TEP uses this detail for information purpose and returns the same in the outbox events for adapters to match up.
effectiveDate Effective date for the event.
bookingDate Date on which this business activity is performed in the underlying system.
channel Channel in which the activity was performed. If pricing is not determined based on channel, then this information is not significant.
branch Indicates the branch name or code in which the business activity was performed. If pricing is not determined based on the branch, this information is not significant.
lineOfBusiness Line of business in which the activity was performed. If pricing is not determined based on LOB, this information is not significant.
systemReference Indicates the identifier of the system to which the event is outgoing.
companyReference Indicates the identifier of the underlying entity, company, or branch.
transactionReference Identifies the transaction.
periodStartDate Date which the system used as the start date for computing the period.
chargeCurrency Indicates the identifier for the currency in which charge is calculated.
feeName Name of the underlying fee(s).
feeDescription Describes the underlying fee(s).
originalFee Standard fee amount applied before pricing evaluation.
feeAdjusted Total signed adjustment amount.
finalFee Final debit or credit fee. Minus ( - ) sign represents a debit charge or fees recoverable from the party. No sign represents a credit charge, cost or bonus payable to the party.
feeType Indicates whether it's a debit or credit type charge.
feeApplicationType Indicates whether the fee is to be made due, paid, or capitalised.
benefitType Indicates the identifier for the name of the benefit(s) passed on to the customer or party. For example, southern region, account package, mobile channel, and so on.
benefitProgram Pricing program under which the benefit is offered.
benefitAmount Indicates the quantum of benefit for a given benefit type.
baseFeeName Identifies the itemised charge.
baseFeeDescription Describes the itemised charge.
baseFeeAmount Computed original base fee amount.
baseFeeAdjustment Total signed adjustment amount.
baseFeeNetAmount Indicates the final base fee amount after including the adjustment.
Sample Code: Periodic Pricing Event

{
  "specversion": "BBBBBBB",
  "type": "AAAAAAAAA",
  "subject": "DDDDDDDD",
  "source": "eeeee",
  "id": "bbbbbbb",
  "time": "BBBBB",
  "correlationid": "cccccc",
  "serviceid": "ee",
  "channelid": "cc",
  "organizationid": "bbbbbbbb",
  "tenantid": "cccccc",
  "businesskey": "DDDDDDDDD",
  "sequenceno": 1,
  "authorization": "ccccccccc",
  "customfilterid": "eee",
  "operationinstanceid": "ccc",
  "sequenceinstanceid": "e",
  "priority": 1,
  "data": {
	   "periodStartDate": "CCCC",
	  
		"chargeCurrency": "DDDDDD",
	  
    
    "baseContractDetails": [
      {
        "contractReference": "DDDDDD",
        "systemReference": "CCCC",
        "companyReference": "BBBBB",
        "eventName": "",
        "baseEventIdentifier": "b",
        "effectiveDate": "ddddddddd",
        "bookingDate": "EEEE",
        "contractCurrency": "AAAAAA",
        "channel": "BBBBBBBB",
        "branch": "eeeeee",
        "lineOfBusiness": "CCCCCCCC",
        "transactionReference": "ddddd",
        "reversalIndicator": false,
        "variation": "",
              "party": [
          {
            "party": "DDDDDDD",
            "partyRole": "",
           
          }
        ],
        "eligibility": [
          {
            "variation": "cccccccc",
            "actionContext": "A",
            "failureType": "A",
                     }
        ],
		 "eligibilityRule": [
          {
            "ruleName": "cccccccc",
            "customerRole": "AAAA",
			 "roleRuleName": "BBBBB",
			  "failureAction": "CCCCC",
            
                     }
        ]
      }    ,
   
    "feeProcessDetails": {[
      {
        "feeName": "eeeeeeeee",
        "feeDescription": "CCCCC",
		"originalFee": "cccccccc",
            "feeAdjusted": "AAAA",
			 "finalFee": "BBBBB",
			  "feeType": "CCCCC",
			  "feeApplicationType": "CCCCC",
			  "benefitDetails": [
          {
            "benefitProgram": "cccccccc",
            "benefitType": "AAAA",
			 "benefitAmount": "BBBBB",
			 
            
                     }
        ],
		  "individualFeeDetails": [
          {
            "baseFeeName": "cccccccc",
            "baseFeeDescription": "AAAA",
			 "baseFeeAmount": "BBBBB",
			  "baseFeeAdjustment": "cccccccc",
            "baseFeeNetAmount": "AAAA",
			
			 
            
                     }
        ]
      }
    ],
  
  }
}
}
  


Interest Rate Calculation

API
The API that's used for calculating the interest rate.

POST/ enterprise/pricing/arrangements/{basereference}/rates

 

Event
The event that's emanated when the interest rate is calculated.

enterprise.calculateInterestRate.interestRateCalculated

Event Payload

contractReference Unique identifier for the contract or account in which the event is raised.
eventName Name of the event that was used for processing by the TEP system.
baseEventIdentifier Name of the event happening in the core system. TEP uses this detail for information purpose and returns the same in the outbox events for adapters to match up.
effectiveDate Effective date for the event.
bookingDate Date on which this business activity is performed in the underlying system.
channel Channel in which the activity was performed. If pricing is not determined based on channel, then this information is not significant.
branch Indicates the branch name or code in which the business activity was performed. If pricing is not determined based on the branch, this information is not significant.
lineOfBusiness Line of business in which the activity was performed. If pricing is not determined based on LOB, this information is not significant.
systemReference Indicates the identifier of the system to which the event is outgoing.
companyReference Indicates the identifier of the underlying entity, company, or branch.
transactionReference Identifies the transaction.
rateName Identifies the underlying interest rate component(s). For example, credit interest, debit interest, penalty interest, and so on.
rateDescription Describes the interest rate component.
originalRate The original rate or base rate.
rateAdjustment The adjusted rate.
finalRate The rate after evaluation.
feeAdjusted Total signed adjustment amount.
rateType Indicates if the rate is debit or credit type interest.
rateDefinition The rate calculation method. For example, fixed, floating, periodic.
benefitName The name of the benefit(s) passed on to the customer or party. For example, southern region, account package, mobile channel, and so on.
benefitProgram Pricing program under which the benefit is offered.
benefitType Indicates the quantum of benefit for a given benefit type.
benefitPercentage Rate benefit in percentage terms.
Sample Code: Interest Rate Calculation

{
  "specversion": "BBBBBBB",
  "type": "AAAAAAAAA",
  "subject": "DDDDDDDD",
  "source": "eeeee",
  "id": "bbbbbbb",
  "time": "BBBBB",
  "correlationid": "cccccc",
  "serviceid": "ee",
  "channelid": "cc",
  "organizationid": "bbbbbbbb",
  "tenantid": "cccccc",
  "businesskey": "DDDDDDDDD",
  "sequenceno": 1,
  "authorization": "ccccccccc",
  "customfilterid": "eee",
  "operationinstanceid": "ccc",
  "sequenceinstanceid": "e",
  "priority": 1,
  "data": {
	  
    "baseContractDetails": [
      {
        "contractReference": "DDDDDD",
        "systemReference": "CCCC",
        "companyReference": "BBBBB",
        "eventName": "",
        "baseEventIdentifier": "b",
        "effectiveDate": "ddddddddd",
        "bookingDate": "EEEE",
        "contractCurrency": "AAAAAA",
        "channel": "BBBBBBBB",
        "branch": "eeeeee",
        "lineOfBusiness": "CCCCCCCC",
        "transactionReference": "ddddd",
        "reversalIndicator": false,
        "variation": "",
              "party": [
          {
            "party": "DDDDDDD",
            "partyRole": "",
           
          }
        ],
        "eligibility": [
          {
            "variation": "cccccccc",
            "actionContext": "A",
            "failureType": "A",
                     }
        ],
		 "eligibilityRule": [
          {
            "ruleName": "cccccccc",
            "customerRole": "AAAA",
			 "roleRuleName": "BBBBB",
			  "failureAction": "CCCCC",
            
                     }
        ]
      }    ,
   
    "feeProcessDetails": {[
      {
        "feeName": "eeeeeeeee",
        "feeDescription": "CCCCC",
		"originalFee": "cccccccc",
            "feeAdjusted": "AAAA",
			 "finalFee": "BBBBB",
			  "feeType": "CCCCC",
			  "feeApplicationType": "CCCCC",
			  "benefitDetails": [
          {
            "benefitProgram": "cccccccc",
            "benefitType": "AAAA",
			 "benefitAmount": "BBBBB",
			 
            
                     }
        ],
		  "individualFeeDetails": [
          {
            "baseFeeName": "cccccccc",
            "baseFeeDescription": "AAAA",
			 "baseFeeAmount": "BBBBB",
			  "baseFeeAdjustment": "cccccccc",
            "baseFeeNetAmount": "AAAA",
			
			 
            
                     }
        ]
      }
    ],
  
  }
}
}


Incoming Events

The following are the incoming API and the event types supported by TEP.

Incoming APIs

Event Type Description Processing API
New New contracts created in core systems. POST /enterprise/pricing/arrangements
Transaction All transactions dealing with amounts. For example, loan disbursements, ATM withdrawals and so on. POST /enterprise/pricing/arrangements /{basereference}/transactions
Generic All business transactions where specific payload is not required. For example, debit card re-issue and so on. POST/ enterprise/pricing/arrangements /{basereference}/activities
Change Product/Renewal Change in base contract's product or renewal of the same product. POST/ enterprise/pricing/arrangements/ {basereference}/productChanges
Change Party Change of parties in the base contracts. POST/ enterprise/pricing/arrangements /{basereference}/partyAmendments
Scheduled Charge Request to TEP to calculate the periodic charges due to end of period. POST/ enterprise/pricing/arrangements/ {basereference}/periodicCharges
Request Rate Request to calculate the interest rate of the contract. POST/ enterprise/pricing/arrangements/ {basereference}/rates
Change Line of Business Modification of the base contract's Line of Business. POST/ enterprise/pricing/arrangements/ {basereference}/lineofBusinessChanges
Change Channel Modification of the base contract's channel. POST/ enterprise/pricing/arrangements/ {basereference}/channelChanges
Change Branch Modification of the base contract's branch. POST/ enterprise/pricing/arrangements/ {basereference}/branchChanges
Change Commitment Modification of the base contract's commitment amount. POST/ enterprise/pricing/arrangements/{basereference}/commitmentChanges
Modification Modification of the base contract's static details. POST/ enterprise/pricing/arrangements/{basereference}/alternatereferenceChanges

Incoming Event Payload

Event Payload

contractReference Unique identifier for the contract or account in which the event is raised.
systemReference Indicates the identifier of the system to which the event is outgoing.
companyReference Indicates the identifier of the underlying entity, company, or branch.
eventName Name of the event that was used for processing by the TEP system.
baseEventIdentifier Name of the event happening in the core system. TEP uses this detail for information purpose and returns the same in the outbox events for adapters to match up.
effectiveDate Effective date for the event.
bookingDate Date on which this business activity is performed in the underlying system.
channel Channel in which the activity was performed. If pricing is not determined based on channel, then this information is not significant.
branch Indicates the branch name or code in which the business activity was performed. If pricing is not determined based on the branch, this information is not significant.
lineOfBusiness Line of business in which the activity was performed. If pricing is not determined based on LOB, this information is not significant.
transactionReference Identifies the transaction.
reversalIndicator Indicates whether the underlying transaction is reversed and the same can be reversed from the TEP system as well.
feeName Name of the fee(s) associated with the event.
feeAmount The original or base fee amount.
feeCurrency Indicates the fee currency.
adjustFeeAmount Adjustment detail, if the base fee is adjusted in the core.
adjustFeeReason The reason for adjusting the base fee.
balanceName Indicates the balances this transaction event affected one on the account.
balanceAmount Indicates the balance movement amount, which is a signed floating number.
productName Identifies the associated product.
party Identifies the party or customer.
partyRole Role played by the party or customer in the account.
alternateType Alternate identifier type used for the account.
alternateReference Identifies the account, using the alternate identifier system.
Sample Code: New Account Creation Incoming Event Payload

{
	"baseDetails": {
		"contractReference": "AAAAAAA",
		"systemReference": "BBBBBB",
		"companyReference": "USSSSSSSS",
		"eventName": "SSSSSSSS",
		"baseEventIdentifier": "HHHH",
		"effectiveDate": "20200130",
		"bookingDate": "20200130",
		"contractCurrency": "CCC",
		"channel": "BCCCC",
		"branch": "OOOOO",
		"lineOfBusiness": "RRRRRR",
		"transactionReference": "AAAAAAAAAAAAA",
		"reversalIndicator": false,
		"feeDetails": [
			{
				"feeName": "AAAAAAA",
				"feeAmount": CCC,
				"feeCurrency": "BBB",
				"adjustFeeAmount": DDD,
				"adjustFeeReason": "JJKKLLL"
			}
		],
		"balances": [
			{
				"balanceName": "HJKJLKLKLKL",
				"balanceAmount": NMNMNMNM
			}
		]
	},
	"productName": "MMMMMM",
	"party": [
		{
			"partyReference": "1111111",
			"partyRole": "PPPPPP"
		}
	],
	"alternateReferences": [
		{
			"alternateReferenceType": "IIII",
			"alternateReferenceId": "NNNNNNNNNNN"
		}
	]
}